//---HEADER
//	Desc:	define constants based on compiler, target platform and architecture
//--------------------------------------------------------------------------->
#ifndef RSLIB___PLATFORMS_AND_COMPILERS_HPP
#define RSLIB___PLATFORMS_AND_COMPILERS_HPP
 
 
 
//---COMPILERS
//--------------------------------------->
#if defined(__GNUC__)
	#ifndef RSLIB___GCC_COMPILER 
	#define RSLIB___GCC_COMPILER __GNUC__
	#endif
	
	#ifndef RSLIB___DLL_EXPORT
	#define RSLIB___DLL_EXPORT
	#endif
	
	#ifndef RSLIB___DLL_IMPORT
	#define RSLIB___DLL_IMPORT
	#endif
#endif
 
 
#if defined(_MSC_VER)
	#ifndef RSLIB___VC_COMPILER 
	#define RSLIB___VC_COMPILER _MSC_VER
	#endif
	
	#if !defined(RSLIB___VC8_COMPILER) && (_MSC_VER >= 1400)
	#define RSLIB___VC8_COMPILER _MSC_VER
	#endif
	
	#if !defined(RSLIB___VC71_COMPILER) && (_MSC_VER >= 1310) && (_MSC_VER < 1400)
	#define RSLIB___VC71_COMPILER _MSC_VER
	#endif
	
	#if !defined(RSLIB___VC7_COMPILER) && (_MSC_VER >= 1300) && (_MSC_VER < 1310)
	#define RSLIB___VC7_COMPILER _MSC_VER
	#endif
	
	#if !defined(RSLIB___VC6_COMPILER) && (_MSC_VER >= 1200) && (_MSC_VER < 1300)
	#define RSLIB___VC6_COMPILER _MSC_VER
	#endif
	
	#ifndef RSLIB___DLL_EXPORT
	#define RSLIB___DLL_EXPORT __declspec(dllexport)
	#endif
	
	#ifndef RSLIB___DLL_IMPORT
	#define RSLIB___DLL_IMPORT __declspec(dllimport)
	#endif
#endif
 
 
 
//---PLATFORM
//----------------------------------->
#if defined(_WIN32) || defined(_WIN64)
	#ifndef RSLIB___WINDOWS
	#define RSLIB___WINDOWS system
	#endif
#endif
 
#if defined(__linux)
	#ifndef RSLIB___LINUX
	#define RSLIB___LINUX system
	#endif
#endif
 
 
 
//---ARCHITECTURE
//	Todo:	these are VC specific. Find out GCC ones.
//------------------------------------------------>
#if defined(_M_IX86)
	#ifndef RSLIB___IA32
	#define RSLIB___IA32 architecture
	#endif
	
	#ifndef RSLIB___32BITS
	#define RSLIB___32BITS architecture
	#endif
#elif defined(_M_IA64)
	#ifndef RSLIB___IA64
	#define RSLIB___IA64 architecture
	#endif
	
	#ifndef RSLIB___64BITS 
	#define RSLIB___64BITS architecture
	#endif
#elif defined(_M_X64)
	#ifndef RSLIB___AMD64
	#define RSLIB___AMD64 architecture
	#endif
	
	#ifndef RSLIB___64BITS 
	#define RSLIB___64BITS architecture
	#endif
#endif
 
 
 
//---BUILD
//	Todo:	these are VC specific. Find out GCC ones.
//------------------------------------------------>
#if defined(_DEBUG)
	#define RSLIB___DEBUG_BUILD build
#else
	#define RSLIB___RELEASE_BUILD build
#endif
 
 
 
#endif//RSLIB___PLATFORMS_AND_COMPILERS_HPP
